package NG::Sys::Text;
use strict;
use warnings;
use utf8;

require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(strip_html check_login_valid check_password_valid);

my %split_string;
sub strip_html{
	my($msg,$max_len,$line_len) = @_;
	if($max_len && length($msg) > $max_len){
		$msg = substr($msg,0,$max_len);
	}
	if($line_len){
		my $re;
		unless($re = $split_string{$line_len}){
			$re = $split_string{$line_len} = qr/(\S{$line_len})/;
		}
		$msg =~ s/$re/$1 /g;
	}
	$msg =~ s/\s+/ /g;
	$msg =~ s/&/&amp;/g;
	$msg =~ s/>/&gt;/g;
	$msg =~ s/</&lt;/g;
	return $msg;
}
sub check_login_valid {
	my ($login) = @_;
	unless($login){
		return "пустой логин";
	}
	unless($login =~ /^[ a-zA-ZёЁа-яА-Я0-9]{3,15}$/){
		return "плохие символы в логине или неподходящая длинна $login";
	}
	unless($login =~ /^[a-zA-ZёЁwа-яА-Я]/){
		return "в начале только буква";
	}
	if($login =~ /\s{2,}/){
		return "много пробелов";
	}
	if($login =~ /admin|system/){
		return "недоступно";
	}
	if($login =~ /\s$/){
		return "пробел в конце нельзя";
	}
	if($login =~ /(.)\1\1/){
		return "много одинаковых букв подряд";
	}
	if($login =~ /[ёЁа-яА-Я]/ and $login =~ /[a-zA-Z]/){
		return "только один алфавит можно в логине";
	}
	return 0;
}
sub check_password_valid {
	my ($pass) = @_;
	unless($pass and length($pass)>2 and length($pass)<16){
		return "Неправильный размер пароля";
	}elsif($pass =~ /(?:^\s)|(?:\s$)|(?:\s{2,})/){
		return "Много пробелов в пароле";
	}
	return 0;
}


1;
